package cn.cdu.basics.service.impl;

import cn.cdu.basics.mapper.UserMappers;
import cn.cdu.basics.service.UserService;
import cn.cdu.data.entity.AddUser;
import cn.cdu.data.entity.User;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.math.BigInteger;
import java.security.SecureRandom;
import java.text.SimpleDateFormat;

@Service
public class UserServiceImpl implements UserService {
    @Resource
    private UserMappers userMappers;

    @Override
    public boolean delById(String id) {
        BigInteger Id = new BigInteger(id);
        return userMappers.delById(Id)>0;
    }
    @Override
    public boolean resetPass(String id) {
        BigInteger Id = new BigInteger(id);
        String password = new BCryptPasswordEncoder().encode("123456");
        return userMappers.resetPass(Id,password,0)>0;
    }

    @Override
    public boolean enable(String id) {
        BigInteger Id = new BigInteger(id);
        return userMappers.enable(Id)>0;
    }
    @Override
    public boolean disable(String id) {
        BigInteger Id = new BigInteger(id);
        return userMappers.disable(Id)>0;
    }

    @Override
    public boolean add(AddUser user) {
        String encryptPass = new BCryptPasswordEncoder().encode(user.getPassword());
        user.setPassword(encryptPass);
        if(user.getStatus()==null){
            user.setStatus(0);
        }
        if(user.getDelFlag()==null){
            user.setDelFlag(0);
        }
        if(user.getId()==null){
            SecureRandom secureRandom = new SecureRandom();

            // 确保第一位是 1-9，后续 18 位是 0-9
            StringBuilder sb = new StringBuilder();
            sb.append(secureRandom.nextInt(9) + 1); // 第一位 [1-9]
            for (int i = 0; i < 18; i++) {
                sb.append(secureRandom.nextInt(10)); // 后续 18 位 [0-9]
            }

            BigInteger result = new BigInteger(sb.toString());


            user.setId(result);
        }

        return userMappers.add(user);
    }

    @Override
    public boolean edit(User user) {
        String password = new BCryptPasswordEncoder().encode(user.getPassword());
        user.setPassword(password);
//
//        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
//
//        String s=sdf.format(user.getBirth());
//        // 格式化日期
//        user.setBirth(s);
        System.out.println("333333333333333333333333333333333333333333333333333333333333333333" +
                "3333333333333333333333333333333333333="+user);
        return userMappers.edit(user)>0;
    }

    @Override
    public boolean delRoleById(String id) {
        BigInteger Id = new BigInteger(id);
        return userMappers.delRoleById(Id)>0;
    }

    @Override
    public boolean cancelDefault(String id) {
        BigInteger Id = new BigInteger(id);
        return userMappers.cancelDefault(Id)>0;
    }
    @Override
    public boolean setDefault(String id) {
        BigInteger Id = new BigInteger(id);
        return userMappers.setDefault(Id)>0;
    }
}
